import axios from 'axios'
import JSONbig from 'json-bigint'

// 1.定义路由基准地址
axios.defaults.baseURL = 'http://ttapi.research.itcast.cn'
// 2.拦截所有的axios请求 加token
axios.interceptors.request.use(
  function (config) {
    // config表示当前请求的配置项
    // console.log('所有的axios请求', config)
    // 1.获取本地缓存中的tokenStr
    const token = localStorage.getItem('tokenStr')
    // 2.如果有 token,就在config上添加一个headers属性，里面放token
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  }
)

// 3.transformResponse处理大整数问题

// data表示从后端返回的数据--字符串
axios.defaults.transformResponse = [function (data) {
  try {
    // 尝试转换，如果是json字符串，就没有回题。会处理成一个对象，里面存储大数
    // 如果不是json字符串，就会到catch中去，直接返回这个数据
    // 在页面上还原用toString
    return JSONbig.parse(data)
  } catch (error) {
    console.log(error)
    return data
  }
}]

export default axios
